package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.diagnose.IDiagnoseAcceptor;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.IHasServicePurchase;
import com.shrct.businessprocess.purchase.RCBasePurchaseRequest;
import com.shrct.businessprocess.purchase.RCServicePurchaseOrder;
import com.shrct.businessprocess.purchase.impl.RCServiceProductPurchaseRequestImpl;
import com.shrct.businessprocess.purchase.proxy.RCServiceProductPurchaseRequestProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCServiceProductPurchaseRequestImpl.class)
public interface RCServiceProductPurchaseRequest extends RCBasePurchaseRequest {
  public abstract Collection<RCServicePurchaseOrder> getPurchaseOrders();
  
  public abstract RCServicePurchaseOrder createAndAddtoPurchaseOrders();
  
  public abstract RCServicePurchaseOrder createAndAddtoPurchaseOrders(final Procedure1<RCServicePurchaseOrder> updater);
  
  public abstract RCServiceProductPurchaseRequest removeFromPurchaseOrders(final RCServicePurchaseOrder rCServicePurchaseOrder);
  
  public abstract RCServiceProductPurchaseRequest removeAllPurchaseOrders();
  
  public abstract RCProjectMoney getTotalOrderAmount();
  
  public abstract void auditPassed();
  
  public abstract IHasServicePurchase getServiceBudget();
  
  public abstract void diagnose(final IDiagnoseAcceptor acceptor);
  
  public abstract RCServicePurchaseOrder createOrder();
  
  public abstract void setAsFinished();
  
  public abstract RCServiceProductPurchaseRequestProxy toProxy();
}
